/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package eeep.dao;

import eeep.entidades.Endereco;
import eeep.entidades.Pessoa;
import eeep.entidades.Turma;
import eeep.entidades.Usuario;
import eeep.util.ConnectionFactory;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

/**
 *
 * @author Junior
 */
public class PessoaDAO {
    public void salvarPessoa(Pessoa pessoa) {
        String sql = "insert into pessoa(nome_pessoa, email_pessoa, id_usuario, id_endereco, id_turma)"
                + " VALUES(?,?,?,?,?)";

        Connection conn = null;
        PreparedStatement pstm = null;
        try {
            // Cria uma conexÃ£o com o banco
            conn = ConnectionFactory.getConexao();

            // Cria um PreparedStatment, classe usada para executar a query
            pstm = conn.prepareStatement(sql);
            pstm.setString(1, pessoa.getNome());
            pstm.setString(2, pessoa.getEmail());
            pstm.setInt(3, pessoa.getUsuario().getId());
            pstm.setInt(4, pessoa.getEndereco().getId());
            pstm.setInt(5, pessoa.getTurma().getId());
            
            
            
            // Executa a sql para inserÃ§Ã£o dos dados
            pstm.execute();

        } catch (Exception e) {

            e.printStackTrace();
        } finally {

            // Fecha as conexÃµes
            try {
                if (pstm != null) {

                    pstm.close();
                }

                if (conn != null) {
                    conn.close();
                }

            } catch (Exception e) {

                e.printStackTrace();
            }
        }
    }
     public Pessoa buscarPessoaPorEmail(String email) {

        String sql = "SELECT * FROM pessoa as p, turma as t, usuario as u, endereco as e "
                + "where  email_pessoa=? and e.id_endereco=p.id_endereco and t.id_turma=p.id_turma and u.id_usuario=p.id_usuario";

        Connection conn = null;
        PreparedStatement pstm = null;
        // Classe que vai recuperar os dados do banco de dados
        ResultSet rset = null;

        try {
            conn = ConnectionFactory.getConexao();

            pstm = conn.prepareStatement(sql);
            pstm.setString(1, email);
            

            rset = pstm.executeQuery();
            Pessoa aux = new Pessoa();
            Endereco endereco = new Endereco();
            Usuario usuario = new Usuario();
            Turma turma = new Turma();
            
            // Enquanto existir dados no banco de dados, faÃ§a
            while (rset.next()) {

                // Recupera o nome do banco e atribui ele ao objeto
                aux.setNome(rset.getString("nome_pessoa"));
                aux.setEmail(rset.getString("email_pessoa"));
                
                endereco.setId(rset.getInt("id_endereco"));
                endereco.setCidade(rset.getString("cidade_endereco"));
                endereco.setBairro(rset.getString("bairro_endereco"));
                endereco.setRua(rset.getString("rua_endereco"));
                endereco.setNumero(rset.getInt("numero_endereco"));
                turma.setId(rset.getInt("id_turma"));
                turma.setNome(rset.getString("nome_turma"));
                turma.setAno(rset.getInt("ano_turma"));
                usuario.setId(rset.getInt("id_usuario"));
                usuario.setTipo(rset.getString("tipo_usuario"));
                aux.setEndereco(endereco);
                aux.setTurma(turma);
                aux.setUsuario(usuario);
                // Recupera a idade do banco e atribui ele ao objeto
           
                

                // Adiciono o contato recuperado, a lista de contatos
                return aux;
            }
        } catch (Exception e) {

            e.printStackTrace();
        } finally {

            try {

                if (rset != null) {

                    rset.close();
                }

                if (pstm != null) {

                    pstm.close();
                }

                if (conn != null) {
                    conn.close();
                }

            } catch (Exception e) {

                e.printStackTrace();
            }
        }

        return null;
    }
    
}
